package FileReader_输入流_读取;
	/*
	 * 1.使用
	 	导包：import java.io.FileReader
	 	创建：FileReader fr = new FileReader("路径/ 文件名");
	 		如果读取的文件不存在，报错java.io.FileNotFoundException: fileNotExist.txt（系统找不到指定的文件。）
	 	使用：xxx.read();
	 		xxx.close();
	 	
	 *
	 * 2. 读取文件(循环)  ：每次调用read()方法，都会尝试读取下一个新字符 
	 * 					控制台显示-1，代表没有元素了，只要后面没有了，打印多少read()都是-1
		int ch ;
		while ( (ch = fr1.read()) != -1 ) {  // 把读取到的值给变量，此次循环都用变量操作，这样就不会在一次循环内多次使用到read
			System.out.print((char)ch+" ");
		}
	
	 */

import java.io.FileReader;
import java.io.IOException;
import java.nio.CharBuffer;
import java.util.spi.LocaleNameProvider;

import org.junit.Test;

public class 关于FileReader {
	
	@Test
	public void 读取文件() throws IOException {
		FileReader fr1 = new FileReader("FileReader1.txt");
		
	//	错误写法  每读一次read，游标往后移一个，循环一次，游标往后移了四次
//		while (fr1.read() != -1) {
//			System.out.println(fr1.read());
//		}
		
		int ch ;
		while ( (ch = fr1.read()) != -1 ) {  // 把读取到的值给变量，此次循环都用变量操作，这样就不会在一次循环内多次使用到read
			System.out.print((char)ch+" ");
		}
	}
	
	@Test
	public void 读取字符串数组() throws IOException {
		FileReader fr = new FileReader("FileReader1.txt");
		
		char[] array = new char[2];// 一次读两个字符存入数组
		int len = 0;
		String str = "";
//		while ((len = fr.read(array)) != -1) {
//			str += new String(array);
//		}
		
//		while( true) {
//			if ( (len=fr.read(array)) != 1) {
//				str+=new String(array);
//			}else {
//				str+=new String(array,0,1 );
//				break;
//			}
//		}
//		System.out.println(str);
		
		while ( (len = fr.read(array)) != -1 ) {   // 等于-1代表没有有效字符了
			str += new String(array, 0, len);   // 获取 当前数组从 角标0 到 角标len 之间数组     len代表有效数组个数，从0到len，获取之间的，(不包括len)
		}
		System.out.println(str);
		fr.close();
		
		
//		int len = fr.read(array); // ***********   把读取到的字符 存入数组  ************     把读取到的2个字符放入数组，，，现在array[] 就有两个元素 h e
//		System.out.println(len);
//		System.out.println(new String(array));
//		
//		len = fr.read(array); // ***********   把读取到的字符 存入数组  ************     把读取到的2个字符放入数组，，，现在array[] 就有两个元素 l l
//		System.out.println(len);
//		System.out.println(new String(array));
//		
//		len = fr.read(array); // ***********   把读取到的字符 存入数组  ************     把读取到的2个字符放入数组，，，现在array[] 就有两个元素 h e
//		System.out.println(len);
//		//System.out.println(new String(array, 0, len));
	}
	

}
